package com.ruoyi.training.mapper;

import java.util.List;
import com.ruoyi.training.domain.Projects;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 项目管理Mapper接口
 * 
 * @author hcc
 * @date 2025-09-16
 */
public interface ProjectsMapper 
{
    /**
     * 查询项目管理
     * 
     * @param projectId 项目管理主键
     * @return 项目管理
     */
    public Projects selectProjectsByProjectId(String projectId);

    /**
     * 查询项目管理列表
     * 
     * @param projects 项目管理
     * @return 项目管理集合
     */
    public List<Projects> selectProjectsList(Projects projects);

    /**
     * 新增项目管理
     * 
     * @param projects 项目管理
     * @return 结果
     */
    public int insertProjects(Projects projects);

    /**
     * 修改项目管理
     * 
     * @param projects 项目管理
     * @return 结果
     */
    public int updateProjects(Projects projects);

    /**
     * 删除项目管理
     * 
     * @param projectId 项目管理主键
     * @return 结果
     */
    public int deleteProjectsByProjectId(String projectId);

    /**
     * 批量删除项目管理
     * 
     * @param projectIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProjectsByProjectIds(String[] projectIds);

    /**
     * 通过项目名查询项目管理
     *
     * @param projectName 项目管理主键
     * @return 项目管理
     */
    public Projects selectProjectsByProjectName(@Param("projectName") String projectName, @Param("pId") String pId);
    /**
     * 通过id查询项目子项目未停用数
     *
     * @param projectId 项目管理
     * @return 结果
     */
    public int selectNormalChildrenById(String projectId);
    /**
     * 根据父ID获取子项目树形结构
     */
    List<Projects> getProjectTreeByParentId(String pId);

    /**
     * 通过项目编号查询项目
     * @param projectNum
     * @return
     */
    public Projects selectProjectsByProjectNum(String projectNum);
    /**
     * 通过项目名查询项目管理
     *
     * @param projectName 项目管理主键
     * @return 项目管理
     */
    public Projects selectProjectsByName(String projectName);

    /**
     * 查询子项目ID列表
     * @param parentId 父项目ID
     * @return 子项目ID集合
     */
    List<String> selectChildProjectIds(@Param("parentId") String parentId);
}
